package 代码随想录.数组.移除元素;

/**lc27. 移除元素
 * link:https://leetcode-cn.com/problems/remove-element/
 * @author ChenweiLin
 * @create 2021-11-29 15:18
 */
public class removeElement {
    public static void main(String[] args) {
        System.out.println(removeElement(new int[]{0, 1, 2, 2, 3, 0, 4, 2}, 2));
    }

    public static int removeElement(int[] nums, int val) {
        //不是排序数组无法用二分
        //快慢指针
        //特殊情况
        int slow = 0;
        for (int fast = 0; fast < nums.length; fast++) {//fast每次固定涨1
            if(val !=  nums[fast]){//校验数组中的每一个数
                //该位置上的不是val
                nums[slow++] = nums[fast];//i++ 和 ++i的区别 i++返回的是i ++i返回的是i+1
                //所以上面这一行相当于是
//                nums[slow] = nums[fast];
//                slow++;
            }
        }
        return slow;//slow最后的位置就是数组的新长度，0 - slow就是新数组
    }
}
